Repository navigation
ci: seed test-e2e's warm DerivedData from main every 6 hours - #14082
Conversation
#14016 lets a test-e2e.yml build start from DerivedData that a main-contained dispatch published, so a test-only change recompiles only the tests. Only such a dispatch publishes it, and focused dispatches test pull request revisions, so none ever did: builds report "no-main-derived-data" and compile the whole app from empty DerivedData (e.g. 12.4 min of build for a 36 ms suite in run 35939043846). Dispatch test-e2e.yml on main's HEAD with one fast suite every 6 hours, skipping a SHA that already has a seed dispatch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: Repository: manaflow-ai/cmux/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (2)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
All contributors have signed the CLA ✍️ ✅ |
A seed dispatch could adopt an exact product, skip the compile, and so publish nothing; seed dispatches now skip product reuse. A step timeout in "Adopt main's DerivedData" kills the restore before its own cleanup, so the compile could start on a half-extracted tree; a failed adoption now clears the DerivedData first. The seed dedupe now looks back 300 runs (50 covered about two hours) and retries only runs that never finished. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…uct-reuse # Conflicts: # .github/workflows/test-e2e.yml
|
Finding from #14098 that affects this PR: warm DerivedData adoption only saves compile time when the producer commit and the tested commit have the same app and package sources. Tonight, the 3 test-e2e builds that adopted main's DerivedData (runs 35942257134, 35942449623, 35942433848) still compiled 2,510 app-target files, which is what a cold build compiles. They also spent about 2 minutes downloading first. Their producer was main about 9 hours earlier, with about 250 changed inputs in between. When a package's interface changes, the Swift build recompiles every file that imports that package, and that is nearly every app file. Adoption paid off only once (6 min instead of 22), and in that case the producer was a few commits away. So a seed that is refreshed every 6 hours will rarely produce a hit on PR revisions, because many PRs merge into main between seeds. #14098 now checks the diff before downloading and starts cold when app sources differ. |
e2e-derived-data-seed.yml (#14082) landed with an ungated Blacksmith fallback; the fork-fallback guard caught it on rebase. Also address review: docs/ci-runners.md still showed the ungated runs-on example. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A focused
test-e2e.ymldispatch should compile only what changed. #14016 made that possible: a build starts from DerivedData that a main-contained dispatch published. But nothing publishes that DerivedData regularly. Focused dispatches test pull request revisions, which never publish, and the seeds so far came from hand dispatches, whose artifacts expire after 3 days. When no seed exists, the build logs"no-main-derived-data"and compiles the whole app.Changes
e2e-derived-data-seed.yml(new). Every 6 hours it dispatchestest-e2e.ymlon main's HEAD withcmuxTests/CmuxPopoverGroupTests(36 ms), unless that SHA already has a seed run that finished or is still running. It dispatches rather than calls, so the run has the identitye2e_warm_derived_data.pytrusts: pathtest-e2e.yml, eventworkflow_dispatch, branchmain. This mirrors howci-main-full-suite.ymldispatchesci.yml..github/andtests/, and a focused dispatch of the pre-merge PR head is a valid producer. It would then publish nothing.test-e2e.ymlnow skips product reuse whendispatch_idstarts withe2e-derived-data-seed-.Validation
ci-guards.ymlrun locally, including those insiderun: |blocks.bun test/claude-environment.test.tsfails, as it does on main.test_local_build_cache_preflight.pyfailed once under sweep load and passes 22 of 22 when run alone; its tests are deadline-based.actionlintis clean.blacksmith-6vcpu-macos-26and the 12 vCPU pool that ci: route focused tests to one front door, and half of them to 12 vCPU #14067 routes odd SHAs to. Both run image26-20260916with Xcode 26.6 and/Users/runner/_work/cmux/cmux, and both computedf9243ea2…(runs 35939305209 and 35939623231). An image rollout that reaches one pool first would split the key until the other catches up.Not yet shown
test-e2e.ymlchanges the E2E product recipe fingerprint, so exact-product reuse misses once after merge.— Camera g1 🛠️
🤖 Generated with Claude Code
Summary by CodeRabbit